package com.google.code.lf.gfm.model.grisbi.echeance;

import java.math.BigDecimal;
import java.util.Date;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

import com.google.code.lf.commons.util.ToStringHelper;
import com.google.code.lf.commons.xml.bind.adapter.XmlBigDecimalAdapter;
import com.google.code.lf.commons.xml.bind.adapter.XmlDateAdapter;

/**
 * Bean représentant une échéance dans le fichier de données <a href="http://grisbi.org/">Grisbi</a>.
 * <br/>Le binding bean/xml utilise <a href="https://jaxb.dev.java.net/">JAXB</a>.
 * 
 * @see Echeances.
 */
@XmlRootElement(name="Echeance")
@XmlAccessorType(XmlAccessType.NONE)
@SuppressWarnings("unused")
public class Echeance {
	// Rmq sur les XmlAttribute : l'ordre affiché est l'inverse de l'ordre déclaré...

	@XmlAttribute(name="No_ech_associee")
	private int idEchAssociee;

	@XmlAttribute(name="Ech_ventilee")
	private int echVentilee;

	@XmlAttribute(name="Date_limite")
	private String dateLimite;

	@XmlAttribute(name="Periodicite_personnalisee")
	private int periodicitePersonnalisee;

	@XmlAttribute(name="Intervalle_periodicite")
	private int intervallePeriodicite;

	@XmlAttribute(name="Periodicite")
	private int periodicite;

	@XmlAttribute(name="Automatique")
	private int isAutomatique;

	@XmlAttribute(name="Notes")
	private String notes;

	@XmlAttribute(name="Sous-imputation")
	private int sousImputation;

	@XmlAttribute(name="Imputation")
	private int imputation;

	@XmlAttribute(name="Exercice")
	private int exercice;

	@XmlAttribute(name="Contenu_du_type")
	private String contenuDuType;

	@XmlAttribute(name="Type_contre_ope")
	private int typeContreOpe;

	@XmlAttribute(name="Type")
	private int type;

	@XmlAttribute(name="Virement_compte")
	private int isVirementCompte;

	@XmlAttribute(name="Sous-categorie")
	private int idSousCategorie;

	@XmlAttribute(name="Categorie")
	private int idCategorie;

	@XmlAttribute(name="Tiers")
	private int idTiers;

	@XmlAttribute(name="Devise")
	private int idDevise;

	@XmlAttribute(name="Montant")
	@XmlJavaTypeAdapter(value=XmlBigDecimalAdapter.class)
	private BigDecimal montant;

	@XmlAttribute(name="Compte")
	private int idCompte;

	@XmlAttribute(name="Date")
	@XmlJavaTypeAdapter(value=XmlDateAdapter.class)
	private Date date;

	@XmlAttribute(name="No")
	private int id;

	/**
	 * Méthode <code>toString()</code> utilisant la réflection pour détailler l'objet.
	 * 
	 * @see ToStringHelper#toString()
	 */
	@Override
	public String toString() {
		return ToStringHelper.toString(this);
	}
}
